/**
 * Created with Intellij JDEA
 * Description:
 * User:
 * Date:2022-03-28
 * Time:9:57
 */


/**
 *1 我们先将该数右移一位
 *2 将原数 与 右移一位 的数异或。（如果，该数为0 1交替的数，那异或后的数就一定位首位为 0 ，以后全为 1 的情况。）
 *3 我们再将 异或后的数+1 与 与异或是数相与，
 */
public class 交替位二进制数 {
    public boolean hasAlternatingBits(int n) {
        int m = n ^ (n >> 1);
        return (m & (m + 1)) == 0;
    }
}
